#ifndef _DRIVER_H_
#define _DRIVER_H_

/*
	class : Driver
	desc : Creates a relatively simple interface
		for making drivers. The args tells where
		do I want to get input from and the returnValue
		tells where do I want to map the output of the 
		driver to.
*/
class Driver
{
	private:
		//function which is executed to perform the task.
		void* (*driverMain)(void* arg, unsigned long int size);
	public:
		//takes in the function I want to execute with the driver.
		Driver(void* (*d)(void* a, unsigned long int s))
		{driverMain=d;}
		//runs the function and returns the result.
		void* operator()(void* a, unsigned long int l)
		{ return driverMain(a, l);}
};

#endif
